home *** CD-ROM | disk | FTP | other *** search
- include lmacros.h
- assume ds:dataseg
- public Sssave,Spsave,Intstk_,doret
- extrn _Dorg_:byte
-
- ifdef FARPROC
- extrn doret:far,asyint_:far
- else
- extrn doret:near,asyint_:near
- endif
-
- dbase dw seg _Dorg_
- ; asy0vec - asynch channel 0 interrupt handler
- public asy0vec_
- asy0vec_ proc far
- push ds ; save on user stack
- mov ds,cs:dbase ; establish interrupt data segment
-
- mov Sssave,ss ; stash user stack context
- mov Spsave,sp
-
- mov ss,cs:dbase
- lea sp,Intstk_+512
-
- push ax ; save user regs on interrupt stack
- push bx
- push cx
- push dx
- push bp
- push si
- push di
- push es
- push ds
- pop es ; set up es reg, so di can be used!!
-
- mov ax,0 ; arg for service routine
- push ax
- call asyint_
- pop ax
- jmp doret
- asy0vec_ endp
-
- ; asy1vec - asynch channel 1 interrupt handler
- public asy1vec_
- asy1vec_ proc far
- push ds ; save on user stack
- mov ds,cs:dbase ; establish interrupt data segment
-
- mov Sssave,ss ; stash user stack context
- mov Spsave,sp
-
- mov ss,cs:dbase
- lea sp,Intstk_+512
-
- push ax ; save user regs on interrupt stack
- push bx
- push cx
- push dx
- push bp
- push si
- push di
- push es
- push ds
- pop es ; set up es reg, so di can be used!!
-
- mov ax,1 ; arg for service routine
- push ax
- call asyint_
- pop ax
- jmp doret
- asy1vec_ endp
-
- ; asy2vec - asynch channel 2 interrupt handler
- public asy2vec_
- asy2vec_ proc far
- push ds ; save on user stack
- mov ds,cs:dbase ; establish interrupt data segment
-
- mov Sssave,ss ; stash user stack context
- mov Spsave,sp
-
- mov ss,cs:dbase
- lea sp,Intstk_+512
-
- push ax ; save user regs on interrupt stack
- push bx
- push cx
- push dx
- push bp
- push si
- push di
- push es
- push ds
- pop es ; set up es reg, so di can be used!!
-
- mov ax,2 ; arg for service routine
- push ax
- call asyint_
- pop ax
- jmp doret
- asy2vec_ endp
-
- ; asy3vec - asynch channel 3 interrupt handler
- public asy3vec_
- asy3vec_ proc far
- push ds ; save on user stack
- mov ds,cs:dbase ; establish interrupt data segment
-
- mov Sssave,ss ; stash user stack context
- mov Spsave,sp
-
- mov ss,cs:dbase
- lea sp,Intstk_+512
-
- push ax ; save user regs on interrupt stack
- push bx
- push cx
- push dx
- push bp
- push si
- push di
- push es
- push ds
- pop es ; set up es reg, so di can be used!!
-
- mov ax,3 ; arg for service routine
- push ax
- call asyint_
- pop ax
- jmp doret
- asy3vec_ endp
-
- ; asy4vec - asynch channel 4 interrupt handler
- public asy4vec_
- asy4vec_ proc far
- push ds ; save on user stack
- mov ds,cs:dbase ; establish interrupt data segment
-
- mov Sssave,ss ; stash user stack context
- mov Spsave,sp
-
- mov ss,cs:dbase
- lea sp,Intstk_+512
-
- push ax ; save user regs on interrupt stack
- push bx
- push cx
- push dx
- push bp
- push si
- push di
- push es
- push ds
- pop es ; set up es reg, so di can be used!!
-
- mov ax,4 ; arg for service routine
- push ax
- call asyint_
- pop ax
- jmp doret
- asy4vec_ endp
-
- end
-